Container-based virtual camera rotation

ABSTRACT

Methods and systems for controlling a view of a virtual camera in a virtual world. A view of user viewing a virtual world may be controlled or changed while accounting for a user&#39;s head position. For example, a virtual camera may be wrapped in a container such that rotation of the container causes rotation of the virtual camera relative to a global coordinate system. Based on a position of a head-mounted display, an initial virtual camera rotation angle relative to a global coordinate system of the virtual world may be identified. An indication to change to view to particular direction may be received. A desired rotation angle relative to the global coordinate system for a view to correspond to the particular direction is then determined. The container is then rotated by a rotation value based at least on both the desired rotation angle and the initial virtual camera rotation angle.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/636,359, filed Jun. 28, 2017, which claims the benefit of U.S.Provisional Application No. 62/489,904, filed Apr. 25, 2017, theentirety of which is incorporated by reference herein.

BACKGROUND

Publishing sites have been a key way to share and consume information onthe web. A handful of services exist that democratize web site creation.However, services do not exist to solve the problem of creating sitesthat realize the full potential of 3D content. With an increasing pushto create easy 3D content, there is a need for tools and/or services tofacilitate the consumption of the 3D content. For instance, movingwithin a virtual world through the use a virtual reality device is oftenchallenging. In some cases, users may not understand how to utilize orinteract with the virtual world. Further, automatically moving the userthrough the virtual world can be difficult to accomplish and may causediscomfort or motion sickness of the user.

It is with respect to these and other general considerations thatembodiments have been described. Also, although relatively specificproblems have been discussed, it should be understood that theembodiments should not be limited to solving the specific problemsidentified in the background.

SUMMARY

The present technology relates to controlling a user's view in a virtualworld, such as a virtual 3D space. For example, a user may be wearing ahead-mounted display (HMD) that provides a virtual reality view of thevirtual world. While the user is viewing the virtual world through theHMD, the user may wish to interact with objects in the virtual world. Tofacilitate interactions with the virtual world, the present technologyalters the user's view by associating, or wrapping, the virtual camerain a container. The virtual camera and the container are associated insuch a manner that changes to the orientation of the container cause achange in orientation of the virtual camera. As such, by controlling theorientation of the container, a program can control the view experiencedby the user. The present technology also accounts for the rotation of auser's head while wearing the device, such that a final view is the viewdesired by a program presenting the virtual world. For instance, thetechnology may determine a rotation angle of the virtual camera prior torotating the container to a new desired view. The technology thenadjusts the amount of rotation for the container based on the determinedrotation angle of the virtual camera. By compensating for the virtualcamera rotation angle, which is controlled by the orientation of theuser's head, the final view of the user is in the direction originallydesired by the program.

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive examples are described with reference tothe following Figures.

FIG. 1 illustrates an example of a head-mounted display.

FIG. 2A illustrates an example view within a 3D space illustrating alocomotion marker.

FIG. 2B illustrates an example in which a locomotion marker is displayedat a position around a 3D object in the virtual world.

FIG. 3 depicts an example method for displaying a locomotion marker.

FIG. 4 depicts an example orientation reference system for a virtualcamera.

FIG. 5 depicts an example method for controlling a view of a virtualcamera in a virtual world with the use of a container.

FIG. 6 is a block diagram illustrating example physical components of acomputing device with which aspects of the disclosure may be practiced.

FIGS. 7A and 7B are simplified block diagrams of a mobile computingdevice with which aspects of the present disclosure may be practiced.

FIG. 8 is a simplified block diagram of a distributed computing systemin which aspects of the present disclosure may be practiced.

FIG. 9 illustrates a tablet computing device for executing one or moreaspects of the present disclosure.

DETAILED DESCRIPTION

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and in which are shown byway of illustrations specific embodiments or examples. These aspects maybe combined, other aspects may be utilized, and structural changes maybe made without departing from the present disclosure. Embodiments maybe practiced as methods, systems or devices. Accordingly, embodimentsmay take the form of a hardware implementation, an entirely softwareimplementation, or an implementation combining software and hardwareaspects. The following detailed description is therefore not to be takenin a limiting sense, and the scope of the present disclosure is definedby the appended claims and their equivalents.

The present technology relates to controlling a user's view in a virtualworld, such as a virtual 3D space. For example, a user may be wearing ahead-mounted display (HMD) that provides a virtual reality view of thevirtual world. While the user is viewing the virtual world through theHMD, the user may wish to interact with objects in the virtual world. Tofacilitate such interaction, the present technology provides fordisplaying locomotion markers in the virtual world that may be selectedby the user. Once the user selects the locomotion marker, the user'sview is transported to a view associated with the locomotion maker. Asan example, a particular locomotion marker may be selected to view aparticular object in the virtual world from a particular position and aparticular orientation. Rotation of the user's view upon selection ofthe locomotion marker, however, poses multiple challenges that thepresent technology overcomes, as discussed further below.

As will be appreciated by those having skill in the art, in a virtualworld, the user's view corresponds to the positioning and orientation ofa virtual camera in the virtual world. Changes to the positioning andorientation of the virtual camera in the virtual world cause the view ofthe virtual world experienced by the user changes. When an HMD isutilized as the viewing device for the user to see the virtual world,the orientation of the virtual camera is generally tied to theorientation of the head of the user wearing the HMD. Accordingly, withan HMD, the orientation of the virtual camera cannot generally beoverridden by a computer program. Thus, when a program needs to alter auser's view in the virtual world, such an action is challenging toaccomplish.

The present technology alters the user's view by associating, orwrapping, the virtual camera in a container. The virtual camera and thecontainer are associated in such a manner that changes to theorientation of the container cause a change in orientation of thevirtual camera. As such, by controlling the orientation of thecontainer, a program can control the view experienced by the user. Evenwith this implementation, further challenges still exist because theuser is still free to move the virtual camera with respect thecontainer. As an example, a program may need to direct a user's view toa direction that is 60 degrees to the left of a global coordinate systemfor the virtual world. This action may need to be performed to cause theuser's view to be looking at a particular object within the virtualworld. Rotation of the container by 60 degrees with respect to theglobal coordinate system, however, may not result in the user's viewbeing at 60 degrees to the left because the user may have already beenlooking to the left (or any other direction other than 0 degrees withrespect to the global coordinate system). Thus, rotation of thecontainer by 60 degrees would result in the user having a view in anundesired direction. The present technology overcomes this limitation bydetermining a rotation angle of the virtual camera prior to rotating thecontainer to the new view, and adjusts the amount of rotation for thecontainer based on the determined rotation angle of the virtual camera.By compensating for the virtual camera rotation angle, which iscontrolled by the orientation of the user's head, the final view of theuser is in the direction originally desired by the program.

FIG. 1 depicts an example of a head-mounted display system (“HMD”) 110having a display source 102 according to an example of the presenttechnology. The HMD 110 may be worn by a user 106 to provide content tothe user 106 through the display source 102, such as virtual realitycontent or augmented reality content. In the example of providingaugmented reality content, the front surface of HMD 110 may incorporateone or more cameras to allow an augmented video stream to be presentedto the user 106 through the display source 102, which may be referred toas video augmented reality. The HMD 110 may also include integratedcomputing components to provide content as a stand-alone system. The HMD110 may also include wireless or wired connectivity features to receivecontent from other computing devices, such as mobile phones, tablets,laptops, desktops, and the like. The display source 102 may be affixedtowards the front of the HMD 110 using any means known to those havingskill in the art. In some examples, the HMD 110 includes multipledisplay sources 102. For instance, the HMD 110 may include a displaysource 102 for each eye. In other examples, the display source 102 maybe a smartphone or other similar device. The display source 102 may alsoinclude, or be displaced proximate to, lenses that allow for the user tomore clearly see the images displayed on the display source. Otherexample HMD's that may be suitable for use with the present technologyare described in U.S. Patent Publication No. 2016/0027213, which isincorporated herein by reference in its entirety.

FIG. 2A depicts an example view within a virtual world illustrating alocomotion marker. To help a user navigate a virtual world, one or moreselectable locomotion markers may be placed within the virtual worldthat identify placement locations for a user within the virtual world.In some examples, the locomotion markers may be displayed within thevirtual world when a user's view, or gaze, is positioned within ordirected to a predetermined area around the locomotion marker. Infurther examples, in addition to identifying locations that the user canmove through the 3D space, the locomotion marker may provide anindication of a default direction of the user's view upon moving to the3D space. For example, users may traverse a virtual world by teleportingfrom one location to another. Upon teleporting to a new space, a usermay become disoriented. The indication of the user's view may providecontext to the user that allows the user to better understand the user'sorientation within the virtual world after teleportation. As an example,a user may select the locomotion marker 202 to transport to the locationof the locomotion marker 202. In the example view 200 depicted, thedirection of the shoes provide the user an indication what the user'sview orientation will be upon being teleported to the location of thelocomotion marker, thereby giving the user context to better understandthe user's orientation upon teleportation. Other visual or graphicalinformation, besides shoes, may also be utilized to provide anindication of a user's final orientation upon being teleported to thelocation of the locomotion marker 202.

One or more locomotion markers may also be associated with content. Insome examples, when 3D content within the virtual world is created ormodified, a locomotion marker may be associated with the 3D content thatplaces a user in an optimal or preferred position and orientation toview the 3D object. In such examples, when the user's gaze focuses on ornear the 3D object, a locomotion marker may be displayed that isproperly oriented to view the object. The displayed locomotion markermay be selected to teleport the user to the optimal position andorientation in order to view the 3D object within the virtual world.FIG. 2B depicts an example view 210 in which a locomotion marker 212 isdisplayed at an optimal or preferred position around a 3D object in thevirtual world. Upon selection of the locomotion marker 212, the user isteleported to the selected position and the user's view will be alteredto the optimal or preferred direction for viewing the 3D object.

The virtual world in the example view 210 also includes a snap zone 214and a view direction marker 216. The snap zone 214 highlights aparticular 3D object in the virtual world when the user's gaze isdirected to the 3D object. The snap zone 216 may be displayed as asemi-transparent 3D object that surrounds another 3D object. Forinstance, in the virtual world depicted in view 210, the snap zone isdepicted as a cylinder around a 3D object in the virtual world. The sizeand shape of the snap zone 216 may be depending on the shape and size ofthe 3D object for which it surrounds. The snap zone 214 may beequivalent to the predetermined area discussed above. The snap zone 214may also include a view direction marker 216. The view direction marker216 indicates what the direction of the user's view will be uponselection of the locomotion marker 212. For example, if a user selectsthe depicted locomotion marker 212, the user will be transported to theposition of the locomotion marker 212 and the user's view will beoriented towards the view direction marker 216. In some examples, theview direction marker 216 may be displayed directly on the underlyingobject, rather than on a snap zone 214.

FIG. 3 depicts an example method 300 for displaying a locomotion marker.Flow begins at operation 302 where the position and orientation of auser's gaze, or view, is monitored. At operation 304, a determination ismade as to whether a user's gaze is directed to a predetermined areaaround a 3D object associated with a locomotion marker. Determiningwhether the user's gaze is within the predetermined area may be based onidentifying at least one of a pitch angle, yaw angle, or roll anglevalue for the virtual camera controlled by the position of the HMD. Ifthe directional vector corresponding to the at least one the pitch, yaw,or roll value would pass through the predetermined area, the user's gazemay be determined to be directed to the predetermined area around the 3Dobject. One example of a predetermined area is the snap zone 214discussed above with reference to FIG. 2B. In some examples, the size ofthe predetermined area may vary based upon the size of the virtualworld, and/or the size or type of a 3D object associated with thelocomotion marker, among other possible options. If the user's gaze isnot within the predetermined area, flow branches No and returns tooperation 302 and the position of the user's gaze is continuallymonitored.

If the users gaze is within a predetermined area around the 3D objectassociated with the locomotion marker, flow branches Yes to operation302. At operation 302, the locomotion marker is displayed within thevirtual world. As previously described, the locomotion marker may alsoprovide an indication of the direction of that the user's gaze willchange to upon moving or teleporting to the locomotion marker. In someexamples, the locomotion marker may be displayed only when the user'sgaze is within a predetermined area around the 3D object associated withthe locomotion marker. In alternate aspects, one or more locomotionmarkers may be continuously displayed within the virtual world.

The process continues to decision operation 308 where a determination ismade as to whether the displayed locomotion marker has been selected.The locomotion marker may be selected through a hand-held control unit,though a smart phone, through other controls operatively connected tothe HMD, or based on a particular gaze or view of the user. Thelocomotion marker may also be selected by any means known to thosehaving skill in the art. If the displayed locomotion marker is notselected, flow branches No and returns to operation 302 where themonitoring of the user's gaze continues. If the locomotion marker isselected, flow branches Yes to operation 310 and the user isautomatically moved or teleported to the locomotion marker within the 3Dspace. In addition to moving the user to the selected location withinthe 3D space, the user's orientation may be altered to an orientationdefined by the selected locomotion marker.

As discussed above, the orientation of the user's view or gaze withinthe virtual world is based on the orientation virtual camera in thevirtual world. The virtual camera is controlled by the positioning ofthe HMD in the real world. The orientation of the virtual camera may bemade with reference to a global coordinate system of the virtual world.For example, the virtual world may utilize a 3D Cartesian coordinatesystem having a pre-defined origin. The virtual camera may be consideredan object within the virtual world, and its orientation may be definedby its Euler angles with respect to the global coordinate system. Forreference, FIG. 4 depicts a simplified image for discussion of differentrotation types discussed herein. With respect to orientation, rotationaround the depicted x-axis is referred to herein as roll (commonlyrepresented by the symbol φ (phi)), rotation around the depicted y-axisis referred to herein as pitch (commonly represented by the symbol θ(theta)), and rotation around the depicted z-axis is referred to hereinas yaw (commonly represented by the symbol ψ (psi)). As will beappreciated by those having skill in the art, different axis androtation naming conventions may be utilized. Those having skill in theart will also appreciate that different techniques for controlling orrepresenting rotation of a virtual object, such as the use of rotationmatrices, quaternions, or other techniques, may be utilized with thetechnology utilized herein.

As also discussed above, with an HMD, the orientation of the virtualcamera cannot generally be overridden by a computer program. Thus, whena program needs to alter a user's view in the virtual world, such anaction is challenging to accomplish. The present technology alters theuser's view by associating, or wrapping, the virtual camera in acontainer. In some examples, the container may be a software object,such as a null object or a GameObject as utilized in the UnityTechnologies programming platform. In some cases, that object may bedisplayed in the virtual world, but in other examples the object is notdisplayed within the visual world. The virtual camera and the containerare associated in such a manner that changes to the orientation of thecontainer cause a change in orientation of the virtual camera. Thepresent technology also compensates for the user's view orientation justbefore or during the transition to a final view, such as a viewassociated with a selected locomotion marker. By compensating for thevirtual camera rotation angle, which is controlled by the orientation ofthe user's head, the final view of the user is in the directioninitially desired by the program, such as the direction associated withthe selected locomotion marker.

FIG. 5 depicts an example method for controlling a view of a virtualcamera in a virtual world with the use of a container. The container isconfigured such that rotation of the container causes rotation of thevirtual camera with respect to the global coordinate system. Atoperation 502, an initial rotation angle of the virtual camera isdetermined with respect to a global coordinate system of the virtualworld. The initial rotation angle of the virtual camera is based atleast partially on the position of the HMD, as discussed above, and thusthe initial rotation angle may be referred to as an initial HMD rotationangle or an initial virtual camera rotation angle. The initial rotationangle may be the rotation angle of the virtual camera just beforereceiving a request to change the user's view or the rotation angle ofthe virtual camera just before a final view is displayed, among otherpotential timeframes. The initial rotation angle may be any of roll,pitch, and/or raw. For instance, the rotation angle may be a combinationof any of roll, pitch, and/or yaw. The rotation angle may also be asingle one of roll, pitch, or yaw.

At operation 504, an indication to change the user's view to aparticular direction is received. For example, the indication to changethe user's view may be the selection of a locomotion marker. In such anexample, the locomotion marker may indicate a particular direction forthe user's view, such as towards a view direction marker. Based on theparticular direction for the user's view, a desired rotation angle forthe view change is determined or identified in operation 506. Thedesired rotation angle is with respect to the global coordinate system.For instance, the desired rotation angle may be a value for a roll,pitch, and/or yaw with respect to the global coordinates. Otheridentifications of rotation angles, such as rotation matrices or otherEuler angle representations, may also be utilized.

Once the desired rotation angle with respect to the global coordinatesystem has been identified, a rotation value for the container isdetermined at operation 508. The rotation value for the container isbased on the initial virtual camera rotation angle identified in and thedesired rotation angle. The rotation value may be determined tocompensate for the initial virtual camera rotation angle such thatrotating the container by the determined rotation value causes the viewto be oriented in the desired direction. As an example, the rotationvalue for the container may be determined by first subtracting theinitial virtual camera rotation angle from 360 degrees to generate anintermediate value. Next, the intermediate value is added to the desiredrotation angle to generate the rotation value for the container. Amodulus operator may also be used such that the resultant rotation valueis not greater than 360. An example function that may be used todetermine the rotation value is as follows:

-   -   //Rotate container to desired point    -   y1=desired angle (determined in operation 506)    -   y2=initial virtual camera angle (determined in operation 502)    -   y3=360−y2 (intermediate value)    -   nY=(y1+y3) % 360 (the rotation value for the container)        The % symbol in the above functionality is a modulus operator.

At operation 510, the container is rotated by the determined rotationvalue. By rotating the container by the determined rotation value, thecontainer causes a final virtual camera rotation angle to be equivalentto the desired rotation angle relative to the global coordinate system.For example, the user's final view after rotation is in the desireddirection, such as the direction associated with a selected locomotionmarker. In some examples, the display on the HMD may fade to black orotherwise obscure the display before displaying the final view. Forinstance, upon a selection of a locomotion marker, the screen may fadeto black, and upon fading back from black, the view of the user will bein an orientation of the final virtual camera angle.

FIGS. 6-9 and the associated descriptions provide a discussion of avariety of operating environments in which aspects of the disclosure maybe practiced. However, the devices and systems illustrated and discussedwith respect to FIGS. 6-9 are for purposes of example and illustrationand are not limiting of a vast number of computing device configurationsthat may be utilized for practicing aspects of the disclosure, describedherein.

FIG. 6 is a block diagram illustrating physical components (e.g.,hardware) of a computing device 600 with which aspects of the disclosuremay be practiced. The computing device components described below may besuitable for the computing devices described above, such as smartphones, tablets, HMDs, laptops, desktops, or other computing devices. Ina basic configuration, the computing device 600 may include at least oneprocessing unit 602 and a system memory 604. Depending on theconfiguration and type of computing device, the system memory 604 maycomprise, but is not limited to, volatile storage (e.g., random accessmemory), non-volatile storage (e.g., read-only memory), flash memory, orany combination of such memories.

The system memory 604 may include an operating system 605 and one ormore program modules 606 suitable for running software application 620,such as one or more components supported by the systems describedherein. As examples, system memory 604 may store a virtual world andassociated functions and operations to be completed within the virtualworld. The operating system 605, for example, may be suitable forcontrolling the operation of the computing device 600.

Furthermore, embodiments of the disclosure may be practiced inconjunction with a graphics library, other operating systems, or anyother application program and is not limited to any particularapplication or system. This basic configuration is illustrated in FIG. 6by those components within a dashed line 608. The computing device 600may have additional features or functionality. For example, thecomputing device 600 may also include additional data storage devices(removable and/or non-removable) such as, for example, magnetic disks,optical disks, or tape. Such additional storage is illustrated in FIG. 6by a removable storage device 609 and a non-removable storage device610.

As stated above, a number of program modules and data files may bestored in the system memory 604. While executing on the processing unit602, the program modules 606 (e.g., application 620) may performprocesses including, but not limited to, the aspects, as describedherein. Other program modules that may be used in accordance withaspects of the present disclosure may include a 3D space generator 624,3D processing and virtual reality applications 626, electronic mail andcontacts applications, word processing applications, spreadsheetapplications, database applications, slide presentation applications,drawing or computer-aided application programs, etc.

Furthermore, embodiments of the disclosure may be practiced in anelectrical circuit comprising discrete electronic elements, packaged orintegrated electronic chips containing logic gates, a circuit utilizinga microprocessor, or on a single chip containing electronic elements ormicroprocessors. For example, embodiments of the disclosure may bepracticed via a system-on-a-chip (SOC) where each or many of thecomponents illustrated in FIG. 6 may be integrated onto a singleintegrated circuit. Such an SOC device may include one or moreprocessing units, graphics units, communications units, systemvirtualization units and various application functionality all of whichare integrated (or “burned”) onto the chip substrate as a singleintegrated circuit. When operating via an SOC, the functionality,described herein, with respect to the capability of client to switchprotocols may be operated via application-specific logic integrated withother components of the computing device 600 on the single integratedcircuit (chip). Embodiments of the disclosure may also be practicedusing other technologies capable of performing logical operations suchas, for example, AND, OR, and NOT, including but not limited tomechanical, optical, fluidic, and quantum technologies. In addition,embodiments of the disclosure may be practiced within a general purposecomputer or in any other circuits or systems.

The computing device 600 may also have one or more input device(s) 612such as a keyboard, a mouse, a pen, a sound or voice input device, atouch or swipe input device, handheld gaming controller, etc. The outputdevice(s) 614 such as a display, speakers, a printer, etc. may also beincluded. The aforementioned devices are examples and others may beused. The computing device 600 may include one or more communicationconnections 616 allowing communications with other computing devices650. Examples of suitable communication connections 616 include, but arenot limited to, radio frequency (RF) transmitter, receiver, and/ortransceiver circuitry; universal serial bus (USB), parallel, and/orserial ports.

The term computer readable media as used herein may include computerstorage media. Computer storage media may include volatile andnonvolatile, removable and non-removable media implemented in any methodor technology for storage of information, such as computer readableinstructions, data structures, or program modules. The system memory604, the removable storage device 609, and the non-removable storagedevice 610 are all computer storage media examples (e.g., memorystorage). Computer storage media may include RAM, ROM, electricallyerasable read-only memory (EEPROM), flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other article of manufacturewhich can be used to store information and which can be accessed by thecomputing device 600. Any such computer storage media may be part of thecomputing device 600. Computer storage media is not a carrier wave orother propagated or modulated data signal.

Communication media may be embodied by computer readable instructions,data structures, program modules, or other data in a modulated datasignal, such as a carrier wave or other transport mechanism, andincludes any information delivery media. The term “modulated datasignal” may describe a signal that has one or more characteristics setor changed in such a manner as to encode information in the signal. Byway of example, and not limitation, communication media may includewired media such as a wired network or direct-wired connection, andwireless media such as acoustic, radio frequency (RF), infrared, andother wireless media.

FIGS. 7A and 7B illustrate a mobile computing device 700, for example, amobile telephone, a smart phone, wearable computer (such as a smartwatch), a tablet computer, a laptop computer, and the like, with whichembodiments of the disclosure may be practiced. In some aspects, theclient may be a mobile computing device. With reference to FIG. 7A, oneaspect of a mobile computing device 700 for implementing the aspects isillustrated. In a basic configuration, the mobile computing device 700is a handheld computer having both input elements and output elements.The mobile computing device 700 typically includes a display 705 and oneor more input buttons 710 that allow the user to enter information intothe mobile computing device 700. The display 705 of the mobile computingdevice 700 may also function as an input device (e.g., a touch screendisplay).

If included, an optional side input element 715 allows further userinput. The side input element 715 may be a rotary switch, a button, orany other type of manual input element. In alternative aspects, mobilecomputing device 700 may incorporate more or less input elements. Forexample, the display 705 may not be a touch screen in some embodiments.

In yet another alternative embodiment, the mobile computing device 700is a portable phone system, such as a cellular phone. The mobilecomputing device 700 may also include an optional keypad 735. Optionalkeypad 735 may be a physical keypad or a “soft” keypad generated on thetouch screen display.

In various embodiments, the output elements include the display 705 forshowing a graphical user interface (GUI), a visual indicator 720 (e.g.,a light emitting diode), and/or an audio transducer 725 (e.g., aspeaker). In some aspects, the mobile computing device 700 incorporatesa vibration transducer for providing the user with tactile feedback. Inyet another aspect, the mobile computing device 700 incorporates inputand/or output ports, such as an audio input (e.g., a microphone jack),an audio output (e.g., a headphone jack), and a video output (e.g., aHDMI port) for sending signals to or receiving signals from an externaldevice.

FIG. 7B is a block diagram illustrating the architecture of one aspectof a mobile computing device. That is, the mobile computing device 700can incorporate a system (e.g., an architecture) 702 to implement someaspects. In one embodiment, the system 702 is implemented as a “smartphone” capable of running one or more applications (e.g., browser,e-mail, calendaring, contact managers, messaging clients, games, andmedia clients/players). In some aspects, the system 702 is integrated asa computing device, such as an integrated personal digital assistant(PDA) and wireless phone.

One or more application programs 766 may be loaded into the memory 762and run on or in association with the operating system 764. Examples ofthe application programs include phone dialer programs, e-mail programs,personal information management (PIM) programs, word processingprograms, spreadsheet programs, Internet browser programs, messagingprograms, and so forth. The system 702 also includes a non-volatilestorage area 768 within the memory 762. The non-volatile storage area768 may be used to store persistent information that should not be lostif the system 702 is powered down. The application programs 766 may useand store information in the non-volatile storage area 768, such ase-mail or other messages used by an e-mail application, and the like. Asynchronization application (not shown) also resides on the system 702and is programmed to interact with a corresponding synchronizationapplication resident on a host computer to keep the information storedin the non-volatile storage area 768 synchronized with correspondinginformation stored at the host computer. As should be appreciated, otherapplications may be loaded into the memory 762 and run on the mobilecomputing device 700 described herein (e.g., search engine, extractormodule, relevancy ranking module, answer scoring module, etc.).

The system 702 has a power supply 770, which may be implemented as oneor more batteries. The power supply 770 might further include anexternal power source, such as an AC adapter or a powered docking cradlethat supplements or recharges the batteries.

The system 702 may also include a radio interface layer 772 thatperforms the function of transmitting and receiving radio frequencycommunications. The radio interface layer 772 facilitates wirelessconnectivity between the system 702 and the “outside world,” via acommunications carrier or service provider. Transmissions to and fromthe radio interface layer 772 are conducted under control of theoperating system 764. In other words, communications received by theradio interface layer 772 may be disseminated to the applicationprograms 766 via the operating system 764, and vice versa.

The visual indicator 720 may be used to provide visual notifications,and/or an audio interface 774 may be used for producing audiblenotifications via the audio transducer 725. In the illustratedembodiment, the visual indicator 720 is a light emitting diode (LED) andthe audio transducer 725 is a speaker. These devices may be directlycoupled to the power supply 770 so that when activated, they remain onfor a duration dictated by the notification mechanism even though theprocessor 760 and other components might shut down for conservingbattery power. The LED may be programmed to remain on indefinitely untilthe user takes action to indicate the powered-on status of the device.The audio interface 774 is used to provide audible signals to andreceive audible signals from the user. For example, in addition to beingcoupled to the audio transducer 725, the audio interface 774 may also becoupled to a microphone to receive audible input, such as to facilitatea telephone conversation. In accordance with embodiments of the presentdisclosure, the microphone may also serve as an audio sensor tofacilitate control of notifications, as will be described below. Thesystem 702 may further include a video interface 776 that enables anoperation of an on-board camera 730 to record still images, videostream, and the like.

A mobile computing device 700 implementing the system 702 may haveadditional features or functionality. For example, the mobile computingdevice 700 may also include additional data storage devices (removableand/or non-removable) such as, magnetic disks, optical disks, or tape.Such additional storage is illustrated in FIG. 7B by the non-volatilestorage area 768.

Data/information generated or captured by the mobile computing device700 and stored via the system 702 may be stored locally on the mobilecomputing device 700, as described above, or the data may be stored onany number of storage media that may be accessed by the device via theradio interface layer 772 or via a wired connection between the mobilecomputing device 700 and a separate computing device associated with themobile computing device 700, for example, a server computer in adistributed computing network, such as the Internet. As should beappreciated such data/information may be accessed via the mobilecomputing device 700 via the radio interface layer 772 or via adistributed computing network. Similarly, such data/information may bereadily transferred between computing devices for storage and useaccording to well-known data/information transfer and storage means,including electronic mail and collaborative data/information sharingsystems.

FIG. 8 illustrates one aspect of the architecture of a system forprocessing data received at a computing system from a remote source,such as a personal computer 804, tablet computing device 806, or mobilecomputing device 808, as described above. Content displayed at serverdevice 802 may be stored in different communication channels or otherstorage types. For example, various documents may be stored using adirectory service 822, a web portal 824, a mailbox service 826, avirtual reality store 828, or a social networking site 830.

A 3D space generator and virtual reality program 820 may be employed bya client that communicates with server device 802, and/or the 3D spacegenerator and virtual reality program 821 may be employed by serverdevice 802. The server device 802 may provide data to and from a clientcomputing device such as a personal computer 804, a tablet computingdevice 806 and/or a mobile computing device 808 (e.g., a smart phone)through a network 815. By way of example, the computer system describedabove may be embodied in a personal computer 804, a tablet computingdevice 806, a mobile computing device 808 (e.g., a smart phone), and/oran HMD 810. Any of these embodiments of the computing devices may obtaincontent from the store 816, in addition to receiving graphical datauseable to be either pre-processed at a graphic-originating system, orpost-processed at a receiving computing system.

FIG. 9 illustrates an exemplary tablet computing device 900 that mayexecute one or more aspects disclosed herein in connection with avirtual reality device. In addition, the aspects and functionalitiesdescribed herein may operate over distributed systems (e.g., cloud-basedcomputing systems), where application functionality, memory, datastorage and retrieval and various processing functions may be operatedremotely from each other over a distributed computing network, such asthe Internet or an intranet. User interfaces and information of varioustypes may be displayed via on-board computing device displays or viaremote display units associated with one or more computing devices. Forexample, user interfaces and information of various types may bedisplayed and interacted with on a wall surface onto which userinterfaces and information of various types are projected. Interactionwith the multitude of computing systems with which embodiments of theinvention may be practiced include, keystroke entry, touch screen entry,voice or other audio entry, gesture entry where an associated computingdevice is equipped with detection (e.g., camera) functionality forcapturing and interpreting user gestures for controlling thefunctionality of the computing device, and the like.

At least the following aspects will appreciated from the foregoingdiscussion. In one aspect, the technology relates to a method forcontrolling a view of a virtual camera in a virtual world. The methodincludes, based on a position of a head-mounted display, identifying aninitial virtual camera rotation angle, relative to a global coordinatesystem of the virtual world, wherein the virtual camera is wrapped in acontainer such that rotation of the container causes rotation of thevirtual camera relative to the global coordinate system; receiving anindication to change the view to a particular direction; identifying adesired rotation angle, relative to the global coordinate system, for aview to correspond to the particular direction; and rotating thecontainer by a rotation value based at least on both the desiredrotation angle and the initial virtual camera rotation angle. In anexample, rotating the container causes a final virtual camera rotationangle to be equivalent to the desired rotation angle relative to theglobal coordinate system. In another example, the method also includesdisplaying, on a display screen of the HMD, the view of the virtualcamera according to the initial virtual camera angle; based on receivingan indication to change the view to a particular direction, fading thescreen to black; and fading the screen from black to display the view ofthe virtual camera according to the final virtual camera rotation angle.In yet another example, receiving the indication includes receiving aselection of a locomotion marker. In still yet another example, themethod also includes displaying a selectable locomotion marker, whereinthe display of the selectable locomotion marker indicates the particulardirection.

In another example, the rotation angle comprises at least one of a pitchangle, a yaw angle, or a roll angle. In yet another example, the methodfurther includes determining the rotation value by: subtracting theinitial virtual camera rotation angle from 360 degrees to generate anintermediate value; and adding the intermediate value to the desiredrotation angle to generate the rotation value.

In another aspect, the technology relates to a system including a headmounted display (HMD); at least one processor operatively connected tothe HMD; and a memory storing instructions that, when executed by the atleast one processor, perform a set of operations comprising: based on aposition of the HMD, identifying an initial virtual camera rotationangle of a virtual camera, relative to a global coordinate system of thevirtual world, wherein the virtual camera is wrapped in a container suchthat rotation of the container causes rotation of the virtual camerarelative to the global coordinate system; receiving an indication tochange the view to a particular direction; identifying a desiredrotation angle, relative to the global coordinate system, for a view tocorrespond to the particular direction; and rotating the container by arotation value based at least on both the desired rotation angle and theinitial virtual camera rotation angle.

In an example, rotating the container causes a final virtual camerarotation angle to be equivalent to the desired rotation angle relativeto the global coordinate system. In another example, the operationsfurther include displaying, on a display screen of the HMD, the view ofthe virtual camera according to the initial virtual camera angle; basedon receiving an indication to change the view to a particular direction,fading the screen to black; and fading the screen from black to displaythe view of the virtual camera according to the final virtual camerarotation angle. In yet another example, receiving the indicationcomprises receiving a selection of a locomotion marker. In still yetanother example, the operations further comprise displaying a selectablelocomotion marker, wherein the display of the selectable locomotionmarker indicates the particular direction. In another example, therotation angle comprises at least one of a pitch angle, a yaw angle, ora roll angle. In yet another example, the operations further includedetermining the rotation value by: subtracting the initial virtualcamera rotation angle from 360 degrees to generate an intermediatevalue; and adding the intermediate value to the desired rotation angleto generate the rotation value.

In another aspect, the technology relates to a method for controlling aview of a virtual camera in a virtual world. The method includes, basedon a position of a head-mounted display, identifying an initial virtualcamera rotation angle of a virtual camera, wherein the virtual camera isassociated with a container such that rotation of the container causesrotation of the virtual camera relative to the global coordinate system;displaying, on a display screen of the HMD, the view of the virtualcamera according to the initial virtual camera angle; displaying, on thedisplay screen of the HMD, a locomotion marker; receiving a selection ofthe locomotion marker; identifying a particular direction for a viewcorresponding to the selected locomotion marker; identifying a desiredrotation angle for a view to correspond to the particular direction; androtating the container by a rotation value based at least on both thedesired rotation angle and the initial virtual camera rotation angle. Inan example, rotating the container causes a final virtual camerarotation angle to be equivalent to the desired rotation angle relativeto the global coordinate system. In another example, the rotation anglecomprises at least one of a pitch angle, a yaw angle, or a roll angle.In yet another example, the operations further include determining therotation value by: subtracting the initial virtual camera rotation anglefrom 360 degrees to generate an intermediate value; and adding theintermediate value to the desired rotation angle to generate therotation value. In still yet another example, the method furtherincludes determining whether a view of the user is within apredetermined area, and wherein displaying the locomotion marker isbased on the view of the user being within the predetermined area. Inanother example, the method further includes displaying a snap zone anda view direction marker.

Aspects of the present disclosure, for example, are described above withreference to block diagrams and/or operational illustrations of methods,systems, and computer program products according to aspects of thedisclosure. The functions/acts noted in the blocks may occur out of theorder as shown in any flowchart. For example, two blocks shown insuccession may in fact be executed substantially concurrently or theblocks may sometimes be executed in the reverse order, depending uponthe functionality/acts involved.

The description and illustration of one or more aspects provided in thisapplication are not intended to limit or restrict the scope of thedisclosure as claimed in any way. The aspects, examples, and detailsprovided in this application are considered sufficient to conveypossession and enable others to make and use the best mode of claimedtechnology. The claimed technology should not be construed as beinglimited to any aspect, example, or detail provided in this application.Regardless of whether shown and described in combination or separately,the various features (both structural and methodological) are intendedto be selectively included or omitted to produce an embodiment with aparticular set of features. For instance, the above described examplesmay be readily combined with one another. Having been provided with thedescription and illustration of the present application, one skilled inthe art may envision variations, modifications, and alternate aspectsfalling within the spirit of the broader aspects of the generalinventive concept embodied in this application that do not depart fromthe broader scope of the claimed disclosure.

1. A method for controlling a view of a virtual camera in a virtualworld, the method comprising: based on a position of a head-mounteddisplay (HMD), identifying an initial virtual camera rotation angle,relative to a global coordinate system of the virtual world, wherein thevirtual camera is wrapped in a container such that rotation of thecontainer causes rotation of the virtual camera relative to the globalcoordinate system; receiving an indication to change the view to aparticular direction; identifying a desired rotation angle, relative tothe global coordinate system, for a view to correspond to the particulardirection; and rotating the container by a rotation value based at leaston both the desired rotation angle and the initial virtual camerarotation angle.
 2. The method of claim 1, wherein rotating the containercauses a final virtual camera rotation angle to be equivalent to thedesired rotation angle relative to the global coordinate system.
 3. Themethod of claim 1, further comprising: displaying, on a display screenof the HMD, the view of the virtual camera according to the initialvirtual camera angle; based on receiving an indication to change theview to a particular direction, fading the screen to black; and fadingthe screen from black to display the view of the virtual cameraaccording to a final virtual camera rotation angle.
 4. The method ofclaim 1, wherein receiving the indication comprises receiving aselection of a locomotion marker.
 5. The method of claim 1, furthercomprising displaying a selectable locomotion marker, wherein thedisplay of the selectable locomotion marker indicates the particulardirection.
 6. The method of claim 1, wherein the virtual camera isconfigured to rotate relative to the container based on the position ofthe head-mounted display.
 7. The method of claim 1, further comprisingdetermining the rotation value by: subtracting the initial virtualcamera rotation angle from 360 degrees to generate an intermediatevalue; and adding the intermediate value to the desired rotation angleto generate the rotation value.
 8. A system comprising: a head-mounteddisplay (HMD); at least one processor operatively connected to the HMD;and a memory storing instructions that, when executed by the at leastone processor, perform a set of operations comprising: based on aposition of the HMD, identifying an initial virtual camera rotationangle of a virtual camera, relative to a global coordinate system of avirtual world, wherein the virtual camera is wrapped in a container suchthat rotation of the container causes rotation of the virtual camerarelative to the global coordinate system; receiving an indication tochange a view of the virtual camera to a particular direction;identifying a desired rotation angle, relative to the global coordinatesystem, for a view to correspond to the particular direction; androtating the container by a rotation value based at least on both thedesired rotation angle and the initial virtual camera rotation angle. 9.The system of claim 8, wherein rotating the container causes a finalvirtual camera rotation angle to be equivalent to the desired rotationangle relative to the global coordinate system.
 10. The system of claim8, wherein the operations further comprise: displaying, on a displayscreen of the HMD, the view of the virtual camera according to theinitial virtual camera angle; based on receiving an indication to changethe view to a particular direction, fading the screen to black; andfading the screen from black to display the view of the virtual cameraaccording to a final virtual camera rotation angle.
 11. The system ofclaim 8, wherein receiving the indication comprises receiving aselection of a locomotion marker.
 12. The system of claim 8, wherein theoperations further comprise displaying a selectable locomotion marker,wherein the display of the selectable locomotion marker indicates theparticular direction.
 13. The system of claim 8, wherein the virtualcamera is configured to rotate relative to the container based on theposition of the HMD.
 14. The system of claim 8, wherein the operationsfurther comprise determining the rotation value by: subtracting theinitial virtual camera rotation angle from 360 degrees to generate anintermediate value; and adding the intermediate value to the desiredrotation angle to generate the rotation value.
 15. A computer-readablestorage medium having computer-executable instructions stored thereuponwhich, when executed by one or more processors of a system, cause thesystem to perform operations comprising: based on a position of ahead-mounted display (HMD), identifying an initial virtual camerarotation angle of a virtual camera, wherein the virtual camera isassociated with a container such that rotation of the container causesrotation of the virtual camera relative to a global coordinate system;displaying, on a display screen of the HMD, a view of the virtual cameraaccording to the initial virtual camera angle; displaying, on thedisplay screen of the HMD, a locomotion marker; receiving a selection ofthe locomotion marker; identifying a particular direction for a viewcorresponding to the selected locomotion marker; identifying a desiredrotation angle for a view to correspond to the particular direction; androtating the container by a rotation value based at least on both thedesired rotation angle and the initial virtual camera rotation angle.16. The computer-readable storage medium of claim 15, wherein rotatingthe container causes a final virtual camera rotation angle to beequivalent to the desired rotation angle relative to the globalcoordinate system.
 17. The computer-readable storage medium of claim 15,wherein the virtual camera is configured to rotate relative to thecontainer based on the position of the HMD.
 18. The computer-readablestorage medium of claim 15, wherein the operations further comprisedetermining the rotation value by: subtracting the initial virtualcamera rotation angle from 360 degrees to generate an intermediatevalue; and adding the intermediate value to the desired rotation angleto generate the rotation value.
 19. The computer-readable storage mediumof claim 15, further comprising computer-executable instructions storedthereupon which, when executed by one or more processors of a system,cause the system to perform operations comprising determining whether aview of a user is within a predetermined area, and wherein displayingthe locomotion marker is based on the view of the user being within thepredetermined area.
 20. The computer-readable storage medium of claim15, further comprising computer-executable instructions stored thereuponwhich, when executed by one or more processors of a system, cause thesystem to perform operations comprising, based on the position of theHMD, displaying a highlighted area to indicate an object for selectionand a view direction marker.